<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        ~ function () {
            // 循环原始字符串中的每一项，让每一项从当前位置后截取 T.length 个字符，然后和 T 进行比较，如果不一样，继续循环；
            // 如果一样返回当前索引即可（循环结束）
            /* function myIndexOf(T) {
                // this:S
                let lenT = T.length,
                    lenS = this.length,
                    res = -1;
                if (lenT > lenS) return -1;
                for (let i = 0; i <= lenS - lenT; i++) {
                    if (this.substr(i, lenT) === T) {
                        res = i;
                        break;
                    }
                }
                return res;
            } */


            // 正则处理
            function myIndexOf(T) {
                // this:S
                let reg = new RegExp(T),
                    res = reg.exec(this);
                return res === null ? -1 : res.index;
            }
            String.prototype.myIndexOf = myIndexOf;
        }();
        let S = "janinenanjanin"
        T = "nan";
        console.log(S.myIndexOf(T))
    </script>
</body>

</html>